// 进行经纬度转换为距离的计算
// 该函数将角度值转换为弧度值，因为在三角函数计算中需要使用弧度值
function Rad(d) {
	// 将角度 d 乘以 π 再除以 180.0 得到弧度值
	return d * Math.PI / 180.0;
}

/*
  计算距离，参数分别为第一点的纬度，经度；第二点的纬度，经度
  默认单位 km
  此函数使用 Haversine 公式计算地球上两点之间的距离
  参考公式：a = sin²(Δlat/2) + cos(lat1) * cos(lat2) * sin²(Δlon/2)
  c = 2 * arcsin(√a)
  d = R * c
  其中 R 是地球半径，这里取 6378.137 千米
*/
export const getMapDistance = (lat1, lng1, lat2, lng2) => {
	// 将第一个点的纬度转换为弧度
	var radLat1 = Rad(lat1);
	// 将第二个点的纬度转换为弧度
	var radLat2 = Rad(lat2);
	// 计算两个点纬度差的弧度值
	var a = radLat1 - radLat2;
	// 计算两个点经度差的弧度值
	var b = Rad(lng1) - Rad(lng2);
	// 使用 Haversine 公式计算两点之间的距离
	var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
		Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
	// 将距离乘以地球半径（以千米为单位），这里的 6378.137 是地球的平均半径（单位：千米）
	s = s * 6378.137;
	// 对计算结果进行四舍五入，保留四位小数
	s = Math.round(s * 10000) / 10000;
	// 将距离结果保留两位小数
	s = s.toFixed(2);
	// 返回计算得到的距离
	return s;
}